package com.alex.config;

import com.google.common.base.Charsets;
import com.google.common.hash.BloomFilter;
import com.google.common.hash.Funnels;

/**
 * 布隆过滤器
 */
public class MyBloomFilter {

    public static void main(String[] args) {
        // 总数量
        int total = 1_000_000;
        // 第3个参数为: 精确度, 默认为0.03; 错误率计算公式为：total * (0.03 / 100);
        BloomFilter bloomFilter = BloomFilter.create(Funnels.stringFunnel(Charsets.UTF_8), total, 0.0003);

        // 初始化数据到BloomFilter中
        for (int i = 0; i < total; i++) {
            bloomFilter.put("" + i);
        }

        // 判断值是否存在于BloomFilter中
        int count = 0;
        for (int i = 0; i<total + 1000; i++) {
            if (bloomFilter.mightContain("" + i)) {
                count ++;
            }
        }

        System.out.println("匹配数量: " + count);
    }
}
